package edu.ensabap.matricula.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Repository;

import edu.ensabap.matricula.bean.AlumnoDTO;
import edu.ensabap.matricula.bean.milagrosDTO;
import edu.ensabap.matricula.constants.MySQlQuery;
import edu.ensabap.matricula.constants.RowMapperConstants;


@Repository

//se crea un repositorio para que reconosca el spring 
public class MilagrosDAO {
	private SimpleJdbcTemplate simpleJdbcTemplate;
    private JdbcTemplate jdbcTemplate;
	private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
	
	@Autowired
	public void init(DataSource dataSource) {
		this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
		this.jdbcTemplate=new JdbcTemplate(dataSource);
		this.namedParameterJdbcTemplate=new NamedParameterJdbcTemplate(dataSource);
		
	} 
	

	@SuppressWarnings("unchecked")
	public List<milagrosDTO> listar(milagrosDTO milagros){
		String sql= "SELECT id, codigo, apellidos, nombres FROM tb_milagros where 1 = 1 ";
		if(milagros.getNombres()!=null){
			sql+=" and nombres like '%"+milagros.getNombres()+"%' "; 
		}
		if(milagros.getCodigo()!=null){
			sql+=" and codigo like '%"+milagros.getCodigo()+"%' "; 
		}
		return jdbcTemplate.query(sql, new RowMapperConstants.MilagrosMapper());
	}
	
	
	public int insertar(milagrosDTO milagros){
		 String sql=MySQlQuery.INSERTAR_LISTA;
		//parametro de donde voy a enviar y recibir
		 Map<String, Object> parametros = new HashMap<String, Object>();
		 parametros.put("codigo", milagros.getCodigo());
		 parametros.put("apellidos", milagros.getApellidos());
		 parametros.put("nombres", milagros.getNombres());
		 
		 return this.simpleJdbcTemplate.update(sql, parametros);
	}
	
	public int delete(milagrosDTO milagros){
		
		String sql=MySQlQuery.ELIMINAR_MILAGROS;
		Map<String, Object> parametros =new HashMap<String, Object>();
		parametros.put("id", milagros.getId());
		return this.simpleJdbcTemplate.update(sql, parametros);
	}
	
	public int actualizar(milagrosDTO milagros){
		
		Map<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("id", milagros.getId());
		parametros.put("apellidos", milagros.getApellidos());
		parametros.put("nombres", milagros.getNombres());
		
		String sql=MySQlQuery.ACTUALIZAR_MILAGROS;
		return this.simpleJdbcTemplate.queryForInt(sql, parametros);
	}
	
}
